import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';

import AutoImport from 'unplugin-auto-import/vite';
import Components from 'unplugin-vue-components/vite';
import { VantResolver } from 'unplugin-vue-components/resolvers';
import { viteMockServe } from 'vite-plugin-mock';
// 导入require
import { createRequire } from 'node:module'
const require = createRequire(import.meta.url)

// 引入path模块
import { resolve } from 'path'

export default defineConfig({
  plugins: [
    vue(),
    viteMockServe({
      // 默认配置项
      mockPath: 'src/mock',    // mock文件存放目录
      enable:true,
    }),
    AutoImport({
      // 自动导入 Vue 相关 API
      imports: ['vue', 'vue-router', 'pinia', {
        '@/stores/*': ['use*'] // 自动导入 stores 下的所有文件
      }],
      // 自动生成类型声明文件（解决 ESLint/TypeScript 报错）
      dts: 'src/auto-imports.d.ts',
      eslintrc: {
        enabled: true, // 生成 .eslintrc-auto-import.json 避免 ESLint 报错
      },
    }),
    Components({
      // 自动导入组件（默认扫描 `src/components` 目录）
      dirs: ['src/components'],
      // 生成组件类型声明文件（解决 TypeScript 类型问题）
      dts: 'src/components.d.ts',
      resolvers: [
        // 自动导入 Vant 组件
        VantResolver(),
      ]
    }),
  ],
  resolve: {
    // 配置路径别名
    alias: {
     '@': resolve(__dirname, 'src'), // 配置路径别名
      'assets': '/src/assets',
      'components': '/src/components',
      'views': '/src/views',
      'router': '/src/router',
    },
  },
  server: {
    open: true,
    host: '0.0.0.0', // 允许外部访问
    port: 3000, // 端口号
  },
  // 配置别名
  css: {
    preprocessorOptions: { // 配置 SCSS
      sass: { 
        additionalData: `
          @use "src/assets/scss/index.scss" as *;
          @use "src/assets/scss/_variables.scss" as *;
        `,
      },
    },
    postcss: {
      plugins: [
        require('postcss-pxtorem')({
          rootValue: 37.5, // 对应设计稿 375px（1rem = 37.5px）
          propList: ['*'], // 可以设置转换的属性，这里选择所有属性
          exclude: /node_modules/i, // 排除 node_modules
          selectorBlackList: [/^html$/] // 排除对 html 元素的转换
        }),
        require('autoprefixer')({
          overrideBrowserslist: ['Android >= 4.0', 'iOS >= 7']
        })
      ]
    }
  },
  build: {
    outDir: 'dist'
  },
});